CMIS compatibility and technical reference
Overview
Bizagi ECM integration feature consists of storing documents and files uploaded in Bizagi directly into your corporate document repository, as described in ECM integration.
This integration relies on the CMIS 1.0 standard (Content Management Interoperability Services), which consists of a generic set of Web services that expose the capabilities of the ECM. It empowers a service-oriented architecture designed to handle metadata, provide check-in and check-out options, and manage other relevant capabilities typically provided by such systems (also often referred to as DMS).
CMIS Compatibility in Bizagi
Bizagi complies with the CMIS version 1.0 standard. Web services supported and invoked by Bizagi are those that follow the SOAP standard protocol.
Typically, the set of Web services provided by ECM systems complying with the CMIS version 1.0 are:
- RepositoryService: A web service providing
getRepositories
,getRepositoryInfo
,getTypeChildren
,getTypeDescendants
, andgetTypeDefinition
methods useful to discover information about the repository, including object-type (metadata) details. - NavigationService: A web service providing
getDescendants
,getChildren
,getFolderParent
,getObjectParents
, andgetCheckedoutDocs
methods useful for traversing the folder hierarchy and locating checked-out documents. - ObjectService: A web service providing basic CRUD (Create, Retrieve, Update, Delete) operations on objects in a repository, through ID-based methods such as
createDocument
,getObject
,getProperties
,updateProperties
, ordeleteObject
. - VersioningService: A web service providing
checkOut
,cancelCheckOut
,getPropertiesOfLatestVersion
,getAllVersions
, anddeleteAllVersions
methods useful for navigating or updating a "Document Version Series". - DiscoveryService: A web service providing search capabilities to search for query-able objects within the repository through the
query
method. - RelationshipService: A web service providing a way to retrieve dependent objects associated with an independent object through the
getObjectRelationships
method. - MultiFilingService: A web service providing
addObjectToFolder
andremoveObjectFromFolder
methods, supported only if the repository supports "multifiling" or "unfiling" optional capabilities. - PolicyService: A web service providing
applyPolicy
,removePolicy
, andgetAppliedPolicies
methods useful for managing policies (of a "controllablePolicy object"). - ACLService: A web service providing
getACL
andapplyACL
methods useful for managing ACL definitions.
For more information about the CMIS standard and its services specification, refer to the CMIS specification.
Note:
Before moving on with the ECM integration, it is recommended that you ensure your ECM system complies with the CMIS standard. Note that you may rely on CMIS clients and procedures to verify this (e.g, using external validators such as http://cmissync.org/CmisCompat/). In case that your ECM does not comply to CMIS, you may always choose to implement a customized integration by means of your own code through the Connectors feature (recommended) or through Widgets.
CMIS Methods Invocation
This section provides a detailed technical reference regarding which CMIS methods are invoked in Bizagi, and at what moment.
When uploading a document in Bizagi for the first time (initial storage at the ECM), the createDocument
method is invoked at the On Exit of that task, and no further options are presented at that point.
When working with documents already stored in the ECM, end users in Bizagi will be able to use Lock/Unlock, Edit, Delete, or Update options.
The below table lists which CMIS methods are invoked, depending on the UI actions end users choose.
Option in Bizagi | CMIS Method Invoked | When Does This Happen? |
---|---|---|
Edit | UpdateProperties is invoked, provided that metadata was edited. | At On Exit of that task (upon clicking Next in Bizagi's form). |
Lock | CheckOut is invoked. | Instantly, upon clicking the Lock option. |
Unlock (after Lock) | CancelCheckOut is invoked. | Instantly, upon clicking the Unlock option. |
Update | CheckIn is invoked. | At On Exit of that task (upon clicking Next in Bizagi's form). |
Edit + Update / Update + Edit | CheckIn is invoked. The CheckIn invocation allows sending properties which have changed as well. | At On Exit of that task (upon clicking Next in Bizagi's form). |
Delete | DeleteObject | At On Exit of that task (upon clicking Next in Bizagi's form). |
Important Notes
1. Bizagi will guarantee that a document will not be left out as locked
This way, once an end user finishes working on an activity which integrates with your ECM, that document in the ECM will be left as unlocked so that others can work on it as well.
This implies that If a Lock option is used, but no Unlocking or Update is done afterward (no changes are actually made to the document), then at the On Exit of that task, Bizagi will invoke a CheckIn with no changes (if your ECM system supports the PWCUpdatable capability).
In case that your ECM system does not support this property, then a CancelCheckOut will be invoked by Bizagi (On Exit as well).
2. Other CMIS Methods Are Invoked as Well
To handle versions, metadata and document information accordingly, note that Bizagi will invoke other CMIS methods as well, such as: getAllVersions, getProperties and getTypeDefinition.
Keep in mind that the table and information above, lists the relevant methods invoked but it does not includes all of those inherent and bound to the appropriate exchange and management of information.
3. Data types belonging to the spec are supported
Bizagi supports all data types as explicitly referenced by the CMIS specification, when managing metadata of an integrated library.
Note that each ECM system may too have its own special data types, which are not part of the standard and possibly uncommon for any type of system. Those data types which belong to the spec and which are supported are:
- String (
xsd:string
) - Boolean (
xsd:boolean
) - Decimal
- Integer (
xsd:integer
) - Datetime (
xsd:dateTime
) - URI (
xsd:anyURI
)